/**
 * 基于TCP传输层协议实现一个websocket应用服务器
 */

const net = require('net')
const {EventEmitter } =require('events');

// EventEmitter事件库， 可以用来发布和订阅事件  进行事件监听  jquery on trigger  addEventListener

class Server extends EventEmitter {
    constructor(options) {
        super(options);
        this.options = options;
        // 创建一个TCP服务器
        this.server = net.createServer(this.listener)
        this.server.listen(options.port || 8888)
    }
    // socket 套接字  用它来发送和接收信息
    listener = (socket) => {
        socket.setKeepAlive(true)

        this.emit('connection', socket)
    }
}